package day0223

func reverseOnlyLetters(s string) string {
	n := len(s)
	byteArray := []byte(s)
	left, right := 0, n-1
	for left < right && right >= 0 && left <= n-1 {
		for left <= n-1 && !isalpha(s[left]) {
			left++
		}
		for right >= 0 && !isalpha(s[right]) {
			right--
		}
		if left < right {
			byteArray[left], byteArray[right] = byteArray[right], byteArray[left]
			left++
			right--
		}
	}
	return string(byteArray)
}

func isalpha(b byte) bool {
	if (b >= 'a' && b <= 'z') || (b >= 'A' && b <= 'Z') {
		return true
	}
	return false
}
